Object identifier index

ABSTRACT

A data processing system generates a mapping between entries in an index to determine an object represented by digital content of a network address. The system includes a network interface system that receives script data and a content title of digital content; a data retrieval interface that retrieves executable logic; a parsing engine that executes the executable logic to extract an identifier of an object; a search engine that searches an index to identify a first entry with indexed data representing a descriptor of the object for which the identifier is extracted; and a mapping engine that generates, in the index, a second entry with data representing the content title of the digital content and with data representing the identifier of the object that is referenced by the digital content accessible at the network address, and a mapping between the first entry and the second entry.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation application of, and claims priorityto, U.S. patent application Ser. No. 15/695,584, titled “OBJECTIDENTIFIER INDEX,” filed on Sep. 5, 2017. The disclosure of theforegoing application is incorporated herein by reference in itsentirety for all purposes.

TECHNICAL FIELD

This disclosure relates generally generating an index of objectidentifiers in a networked computing system.

BACKGROUND

The Internet provides access to a wide variety of resources. Forexample, content providers serve video, audio, and Web pages over theInternet. Content providers determine what content that users areinterested in and provide targeted content to those users.

SUMMARY

The data processing system described herein provides several advantages.The data processing system generates an object identifier index thatenables targeted digital content to be served to a client device.Specifically, the object identifier index enables digital content to beserved, the digital content relating to the object(s) in which a user ofa client device has indicated an interest (e.g., by selecting contentrelated to the object(s)). The data processing system uses the objectidentifier index to determine the object to interest for the user of theclient device by using a static script tag embedded in digital content(e.g., a web page) served by the content provider (e.g., a publisher).The static script tag is simpler and less prone to causing errors than adynamic script tag, which requires customized configuration and ongoingsupport for each individual content provider. Bypassing the use of adynamic script tag to retrieve object identifiers improves the existingtechnological process because the static script tag represents astandardized, robust alternative that is integrated in a contentprovider's computing system more quickly than a dynamic tag and thatrequires little or no ongoing support or updating as the contentprovider updates content of the content provider's domain. The dataprocessing system reduces errors in returning targeted content to clientdevices, relative to a system using dynamic tags, and enables contentproviders to provide targeted content more quickly and effectively thana system that uses dynamic script tags.

In addition to simplifying the setup process and reducing maintenanceoverhead for delivering targeted digital content, the object identifierindex of the data processing system enables faster lookup times forretrieving identifiers of objects of interest of the user of a clientdevice, relative to lookup times for retrieving identifiers of objectsusing a non-indexed object identifier list. The data processing systembuilds the object identifier index in advance of client device requestsfor data from content providers. The content provider does not need tosend an additional request for data (e.g., cached data in a browserapplication) from the client device. When the client device requestscontent from the content provider, the content provider executes thescript tag and determines the identity of the client device and whichobjects a user associated with the device has shown interest in (e.g.,selected, viewed, etc.). The content provider sends this data to anevaluation platform (e.g., an ad exchange), which then uses the objectidentifier index to determine which objects are of interest to the user.The evaluation platform determines which targeted digital content itemsto provide to the content provider that the content provider servesalong with other content (e.g., web page data). By gathering objectidentifier information using the static script tag, the evaluationplatform does not need to send additional requests for data from theclient device, reducing bandwidth usage in the networked computerenvironment, relative to bandwidth usage of a system that does notgather object identifier information when content is requested by theclient device.

This document describes a network interface system that receives scriptdata specifying a network address and a content title of digital contentaccessible at the network address, where the network address comprisesdomain data; a data retrieval interface that retrieves, based on thedomain data of the network address, executable logic for parsing thenetwork address; a parsing engine that executes the executable logic toextract, from the network address, an identifier of an object that isreferenced by the digital content accessible at the network address; asearch engine that searches an index to identify a first entry withindexed data representing a descriptor of the object for which theidentifier is extracted; and a mapping engine that generates, in theindex, a second entry with data representing the content title of thedigital content accessible at the network address and with datarepresenting the identifier of the object that is referenced by thedigital content accessible at the network address and that generates, inthe index, a mapping between the first entry and the second entry.

In some implementations, the descriptor includes an object title thatdescribes a product represented by the descriptor. In someimplementations, the second entry includes two sub entries that arelinked together. In some implementations, the network interface receivesthe script data in response to execution of logic embedded in thedigital content accessible at the network address.

In some implementations, the logic embedded in the digital content atthe network address is embedded in a static script tag of the digitalcontent at the network address. In some implementations, the mappingengine matches the identifier of the object to a stored object titlebased on the mapping of the first entry to the second entry in theindex.

In some implementations, the index enables a retrieval of a content itemrepresenting the object with a reduced latency relative to a latencycaused by retrieval of the content item representing the objectindependent of the index.

In some implementations, the parsing engine analyses a plurality ofnetwork addresses of a domain specified by the domain data and compareseach of the plurality of the network address to other network addressesof the plurality to determine an additional one or more rules for thedomain specified by the domain data.

In some implementations, the mapping engine determines that storedobject titles are related based on comparing identifiers each mapped toa respective stored object title of the stored object titles. In someimplementations, the identifier comprises a product identifier, andwhere the object comprises a product. In some implementations, thecontent title is a first content title, and where a second content titleis not unique from the first content title, and where upon detection ofnon-unique second content title, the mapping engine removes, from theindex, the first entry including the first content title and anadditional entry including the second content title. In someimplementations, the mapping engine maps the first entry and the secondentry using a lookup table.

In some implementations, one or more processing devices are configuredto perform operations including receiving script data specifying anetwork address and a content title of digital content accessible at thenetwork address, where the network address comprises domain data;retrieving, based on the domain data of the network address, executablelogic for parsing the network address; executing the executable logic toextract, from the network address, an identifier of an object that isreferenced by the digital content accessible at the network address;searching an index to identify a first entry with indexed datarepresenting a descriptor of the object for which the identifier isextracted; and generating, in the index, a second entry with datarepresenting the content title of the digital content accessible at thenetwork address and with data representing the identifier of the objectthat is referenced by the digital content accessible at the networkaddress and that generates, in the index, a mapping between the firstentry and the second entry.

In some implementations, the descriptor includes an object title thatdescribes a product represented by the descriptor. In someimplementations, the script data is received in response to execution oflogic embedded in the digital content accessible at the network address.

In some implementations, the logic embedded in the digital content atthe network address is embedded in a static script tag of the digitalcontent at the network address. In some implementations, the operationsinclude matching the identifier of the object to a stored object titlebased on the mapping of the first entry to the second entry in theindex.

In some implementations, the index enables a retrieval of a content itemrepresenting the object with a reduced latency relative to a latencycaused by retrieval of the content item representing the objectindependent of the index.

In some implementations, the operations include analyzing a plurality ofnetwork addresses of a domain specified by the domain data and compareseach of the plurality of the network address to other network addressesof the plurality to determine an additional one or more rules for thedomain specified by the domain data.

In some implementations, a non-transitory computer readable mediumstores instructions operable to cause one or more processing devices toperform operations including receiving script data specifying a networkaddress and a content title of digital content accessible at the networkaddress, where the network address comprises domain data; retrieving,based on the domain data of the network address, executable logic forparsing the network address; executing the executable logic to extract,from the network address, an identifier of an object that is referencedby the digital content accessible at the network address; searching anindex to identify a first entry with indexed data representing adescriptor of the object for which the identifier is extracted; andgenerating, in the index, a second entry with data representing thecontent title of the digital content accessible at the network addressand with data representing the identifier of the object that isreferenced by the digital content accessible at the network address andthat generates, in the index, a mapping between the first entry and thesecond entry.

The details of one or more implementations are set forth in theaccompanying drawings and the description below. Other features,objects, and advantages will be apparent from the description anddrawings, and from the claims.

DESCRIPTION OF THE DRAWINGS

FIG. 1 is a diagram of a data processing system that accesses an objectidentifier index.

FIG. 2 shows representative user interfaces.

FIG. 3 is a flow diagram showing actions for generating an objectidentifier index.

FIG. 4 is a block diagram of components of a system for logicalsegmentation data processing.

Like reference symbols in the various drawings indicate like elements.

DETAILED DESCRIPTION

Referring to FIG. 1, a data processing system 100 includes contentprovider system 170, and client device 180. The data processing system100 includes networking interface system 110, data repository 120,mapping engine system 130, and evaluation platform system 160. Themapping engine system 130 generates an object identifier index 150 forassociating a client device 180 with one or more objects that have beenidentified as of interest to a user of the client device 180.

The object identifier index 150 includes entries that form columns androws in the object identifier index 150. Each column includes aplurality of entries that have a similar type of data. In this example,the object identifier index 150 includes an object identifier column 150a, content title column 150 b, object title column 150 c, and clientdevice identifier list column 150 d.

The object identifier index 150 includes rows. The rows include entriesthat are related to one another. For example, row 150 g includes entries150 h-k. Entry 150 h includes data 150 w representing object identifier02212 (hereinafter, referred to as object identifier 150 w). The objectidentifier 150 w includes a unique code that distinguishes the objectfrom other objects and that can be used by computing systems as areference for the object. Entry 150 i includes data 150 x representingcontent title “Store/Clothes/Polos/Green” (hereinafter, referred to ascontent title 150 w). The content title 150 w includes a title (e.g., awebpage title) of the website in which the object is being referenced,and the website includes content 175 that is published or displayed tothe user on the client device 180. Entry 150 j includes data 150 yrepresenting object title “Green Polo Large” (hereinafter, referred toas object title 150 y). The object title includes a descriptor of theobject that distinguishes the object from other objects. Entry 150 kincludes data 150 z representing a list of client devices associatedwith the object identifier (hereinafter, referred to as list 150 z). Theclient device identifiers include references to the devices of theusers. The entries 150 h-k and data 150 w-z are examples forillustrating the behavior of the object identifier index 150.

A user of the client device 180 (e.g., laptop, mobile phone, desktop,tablet, etc.) browses content (e.g., websites) hosted by the contentprovider system 170 over a network. Websites include one or moreresources hosted by one or more servers of the content provider system170. An example website is a collection of webpages formatted inhypertext markup language (HTML) that includes text, images, multimediacontent, and programming elements, such as scripts. Each website ismaintained by a content provider (e.g., a publisher), which may be anentity that controls, manages and/or owns the website. In someimplementations, the data processing system 100 may be hosted by one ormore of the servers that host websites (and may be part of the resourcesprovided by websites). In some implementations, the data processingsystem 100 may be part of another system. In some implementations, thedata processing system 100 may be distributed among various hardwareelements shown in the network of FIG. 1.

The content provider system 170 sends content 175 to the client device180. The content 175 includes data that is provided over a network froma content provider system 170. The content 175 is identified by acontent identifier (e.g., network address, portion of a network address,etc.) that is associated with the content. The content 175 includes oneor more of HTML, pages, word processing documents, portable documentformat (PDF) documents, images, video, and news feed sources, etc. Thecontent 175 includes one or more of words, phrases, images and sounds.The content 175 includes embedded information (such as meta-informationhyperlinks) and/or embedded instructions, such as a script tag. In thisexample, networking interface system includes scripts tags 140-145. Forexample, the script tag 140 includes one or more of executable scripts,code snippets, etc. Examples of the content 175 also include informationabout keywords, online video, electronic commerce, or any other subjectfor which a graphic is generated. The content 175 can include referencesto one or more objects, such as object A, object B, or object C, asshown in FIG. 1.

A digital content item 165 associated with an object (e.g., a product,good, service, etc.) may be provided to client devices (such as theclient device 180) based on the content 175 that was previously accessedby the client device 180. In some implementations, the digital contentitem 165 is an advertisement. For example, in response to the clientdevice 180 requesting the content 175 from a content provider system170, the mapping engine system 130 infers an interest, by a user, in anobject (e.g., objects A, B, and/or C) referenced by the content 175. Themapping engine system 130 classifies the client device 180 of the userinto one or more audience segments (e.g., lists of client devicesassociated with the respective objects A, B, and/or C). For example, theclient device 180 requests the content 175 including data related toobject A (e.g., a webpage for purchasing object A). The mapping enginesystem 130 classifies the client device 180 into an audience segmentthat represents users interested in object A.

In some implementations, upon classifying the user into the audiencesegment, the mapping engine system 130 stores cookie data 185 on theclient device 180. The cookie data 185 includes data indicating that theuser has an interest in the object. The cookie data 185 (and thusinference of interest in the object) is set based on the user'smembership in the audience segment.

When the client device 180 accesses the content 175 hosted by thecontent provider system 170, the script tag 140 (or one of script tags141-145) causes the content provider system 170 to execute a script thatassociates the client device 180 with the content 175 being accessed bythe client device 180. The script tag 140 sets the cookie data 185 forthe client device 180. The script tag 140 causes the content providersystem 170 to send data to the networking interface system 110 foradding data representing the client device 180 to the audience segmentassociated with the object represented in the content 175 accessed bythe client device 180. The mapping engine system 130 generates, for eachobject, a client device identifier list 150 z of client devices thathave some association with the object based on accessing contentrepresenting the object.

To determine which objects to associate with which devices, the mappingengine system 130 analyzes other data sent by the content providersystem 170 after execution of the script tag 140. The content providersystem 170 sends, to the networking interface system 110 of the dataprocessing system 100, data including the content title 150 x (e.g., awebpage title as specified by HTML, fields) of the content 175 in whichthe script tag 140 is embedded. The content provider system 170 sends,to the networking interface system 110, a content identifier (e.g.,webpage identifier including a uniform resource locator (URL)). Thecontent provider system 170 sends, to the networking interface system110, the client device identifier, such as described above. The scripttag 140 (and script tags 141-145) show representative data that is sentto the networking interface system 110 when the script tag 140 (orscript tags 145) is executed.

The script tag 140 is a static script tag because it does not requirecustom input values to be encoded in the script that dynamically requestdata from the content provider system 180 when the script is executed.The script tag 140 does not need to be customized for a particularcontent provider system 170 or content provider webpage. For example,script tag 140 is implemented for many different content providersystems that are each different from one another without changing one ormore parameters of the script tag 140 code. In contrast, a dynamicscript tag requires one or more unique values to be input into fields ofthe script tag code that varies between different content providersystems.

Since dynamic script tags require some customization, implementation canbe error-prone and can take a long time relative to an amount of timefor implementation of a static script tag, such as script tag 140. Forexample, a content provider system 170, to implement a dynamic tag,customizes one or more fields of the dynamic tag for different webpagesof the content provider system. If an operator of the content providersystem 170 makes a mistake, the dynamic script tag returns inaccuratedata or does not return data.

The script tag 140 is a static script tag, and can be implementeduniformly and automatically across many different content providersystems. Since implementation of the script tag 140 is simpler than adynamic script tag implementation, the implementation is less errorprone and reliably sends data for mapping into the object identifierindex. The script tag 140 does not explicitly cause the content providersystem 170 to return an object identifier for an object represented inthe content (e.g., webpage) of the content provider system 170 becausedoing so includes script tag customization for each content providersystem, which is labor intensive and error-prone, as described above.

The mapping engine system 130 determines the identification of an objectrepresented by the content of a content provider system 170, when thecontent is accessed by the client device 180. The mapping engine system130 determines the object identifier of the object based on the dataprovided by the script tag 140. The mapping engine system 130 analyzesthe content title 150 x and the content identifier provided by thescript tag 140 to the networking interface system 110.

When analyzing a content title 150 x specified by the script tag 140(and stored in an entry in column 150 b), mapping engine system 130 usesa set of rules to determine the object identifier 150 w (e.g., productidentifier) for associating with the client device 180 in a clientidentifier list 150 z in the object identifier index 150. In someimplementations, the content title 150 x includes a webpage title of theHTML, of the webpage in which the object is being represented.

In some implementations, the mapping engine system 130 performs asemantic analysis on a content title (e.g., content title 150 xspecified by an entry in content title column 150 b) to determine theobject identifier 150 w. The mapping engine system 130 compares thecontent title 150 x to an object title 150 y in an object feed (e.g., alibrary of objects registered in the repository 120). For example, oneor more terms of the object title 150 y can be present in the websitetitle, such as brand name, a product name, a version number, a productnumber, etc. The semantic analysis is a part of a machine learningsystem, such as a deep learning or neural network that includes one ormore classifiers.

The mapping engine system 130 uses one or more rules to increase thequality of the object identifier index 150. For example, if a contenttitle 150 x is matched to more than two objects, the content title isdiscarded as generic, rather than being indicative of a particularobject. The mapping engine system 130 removes, from the index, contenttitles (such as content title 150 x) that are associated with more thantwo or three object identifiers because it is less likely that themapping engine system 130 determines for which object of the more thantwo or three identifiers there is interest of the user. For example, ifone or more objects are no longer represented by a content providersystem 180, the content provider system redirects the client device to asecond webpage. The second webpage can be a homepage, a “sold out” page,etc. The second webpage can thus be incorrectly associated with manyobjects if the mapping engine system 130 does not remove generic contenttitles from the object identifier index 150.

The mapping engine system 130 groups similar content titles into groups.The groups are associated with a class of objects, and when a user isinterested in an object of the class of objects, content associated withany object of the group is sent to the client device 180 of the user.For example, a class of objects includes objects having the same productnumber except for a change in size, color, type, etc. In someimplementations, a group identifier is used to associate the objectidentifier 150 w to the client device 180. For example, the objects inthe class include a portion of the object identifier 150 w that isidentical to other object identifiers of the class, such as a productnumber or category designation. The mapping engine system 130 uses thegroup identifier to ensure that similar object titles of column 150 cand content titles of column 150 b are not mistakenly classified asgeneric.

The mapping engine system 130 parses the HTML code (or other webpage orcontent code used to render the content) and uses patterns of the codeto determine object identifiers to associate with the client device 180.For example, the webpage title and the object title 150 y are similarfor many webpages and the objects they represent. The mapping enginesystem 130 uses an edit distance between the object title 150 y and thecontent title 150 x to further increase the accuracy of the objectidentifier index 150. For example, if the edit distance is greater thana threshold value, the mapping engine system 130 assumes that the objecttitle 150 y and the content title 150 x are not necessarily semanticallylinked. To conserve memory, content titles of column 150 b are truncatedto a particular length, such as 256 bytes.

The mapping engine system 130 includes a search engine. The searchengine searches the object identifier index 150 to identify the entry(e.g., entry 150 j) with indexed data representing the object title(e.g., 150 y) of the object for which the content title 150 x matches.The mapping system 130 then maps another entry (e.g., entry 150 i)including the content title 150 x to the entry 150 j including theobject title 150 y. The client device identifier that was received fromthe content provider system 170 is also included in an entry (e.g.,entry 150 k) that is mapped to the entry 150 j including the objecttitle 150 y.

The mapping engine system 130 uses a content identifier (e.g., thewebpage URL, network address, etc.) to determine the object identifier150 w of the object represented in the content. The content identifieris parsed to determine whether the object identifier 150 w is includedin the content identifier. The mapping engine system 130 determines,based on the data received from the content provider system 170, adomain of the content provider system. The domain of the contentprovider system 170 is indicative of a format of the content identifier,such as where the object identifier 150 w is located in the contentidentifier for product pages of the domain. For example, a domainincludes many webpages, each with similar network addresses that mightvary with sequential numbering. The mapping engine system 130 includes adata retrieval interface. The data retrieval interface retrieves, basedon the domain data of the content identifier, executable logic forparsing the content identifier, the executable logic including a ruleset. The data retrieval interface retrieves the executable logic fromthe repository 120.

The mapping engine system 130 includes a parsing engine. The parsingengine executes the executable logic (e.g., the rule set) to extract,from the content identifier, an object identifier (e.g., objectidentifier 150 w) of an object that is referenced by the content 175accessible at the network address specified by the content identifier.

The mapping engine system 130 develops the rule set for parsing thecontent identifiers using machine learning (deep learning, neuralnetworks, etc.). In some implementations, the mapping engine system 130analyzes the content identifiers of an entire domain or multiple domainstogether for determining a pattern in the content identifiers. Thepattern is indicative of an object identifier 150 w that is in thecontent identifier. For example, a pattern for a domain might indicatethat the object identifier 150 w is in each content identifier for thedomain as the last path component of URLs for each webpage of thedomain. In some implementations, a semantic analysis of the contentidentifiers of a domain enables a determination by the mapping enginesystem 130 that the object identifier 150 w appears at a specific offsetafter a common term or phrase of the content identifiers. For example,if a URL specifies www.website.com/productid=12345 the mapping enginesystem 130 determines that the object identifier is one space offsetfrom the term “productid,” and that for this URL, the object identifieris 12345.

Once the object identifier 150 w is determined for a webpage, themapping engine system 130 stores one or more of the object identifier,the content title 150 x, the object title 150 y, and the client deviceidentifier(s) list 150 z that have been found to be related to oneanother in entries in the object identifier index 150. The search enginesearches the object identifier index 150 to identify the entry (e.g.,entry 150 j) with indexed data representing the object title (e.g., 150y) of the object for which the identifier is extracted. The mappingsystem 130 then maps another entry (e.g., entry 150 h) including theobject identifier (e.g., object identifier 150 w) to the entry 150 jincluding the object title 150 y. Since the object title entry 150 j ismapped to the client device entry 150 k and the content title entry 150i, the object identifier entry 150 h is also mapped to the client deviceidentifier entry 150 k.

The evaluation platform system 160 uses the object identifier index 150to determine which digital content item 165 (e.g., product ad) should besent to the content provider system 170 for presenting with the contentof the content provider system. For example, when a client deviceidentifier of the list 150 z and the object identifier 150 w are in anentry of the object identifier index 150, the evaluation platform system160 marks a digital content item 165 for the object as eligible to beselected for presentation along with the content of the content providersystem 170. The eligible content items list 190 includes the list ofdigital content items representing objects (e.g., products) that are ofinterest to the user of the client device 180. The eligible contentitems list 190 is sent to the evaluation platform system 160 as a “pool”of digital content items from which a digital content item 165 can beselected for serving to the client device 180 along with the content 175that is being requested.

Data repository 120 stores the object identifier index 150. Therepository 120 is a part of the data processing system 100. Therepository 120 is accessible by one or more of the mapping engine system130, the evaluation platform system 160, and the networking interfacesystem 110 for generating the object identifier index 150.

The evaluation platform 160, which serves digital content item 165,receives a request from the website for a digital content item 165(e.g., an ad) relating to the object in which the client device 180 hasmatched an object identifier 150 w. The evaluation platform system 160provides appropriate content to the content provider system 170 which,in turn, incorporates that digital content item 165 into the content ofthe webpage, and outputs the content to the user, along with theremainder of the webpage content. The content 175 and the digitalcontent item 165 are displayed on a computing device, such as the clientdevice 180. In some implementations, when displayed, the digital contentitem 165 is incorporated into an appropriate slot. The user of theclient device 180 may select the ad by clicking-on the ad. In response,a hyperlink associated with the ad directs the user to another webpage.For example, if the digital content item 165 is for product ABC, thewebpage to which the user is directed may be the home page for ABCProduct Store. This type of content access is known as click-through. Inthis context, a “click” is not limited to a mouse click, but rather mayinclude a touch, a programmatic selection, or any other interaction bywhich the digital content item 165 may be selected.

The evaluation platform system 160 runs a content evaluation (e.g., anauction) to determine which digital content item 165 is to be output inresponse to receipt the one or more client device identifier lists (suchas list 150 z) and mapped object identifiers (such as object identifier150 w). In the evaluation, providers of digital content items submiteligibility values on specific keywords (which are associated withcontent). The evaluation platform system 160 determines the list ofeligible digital content items for a client device 180 based on whichobject identifiers specified in object identifier row 150 a representthe client device 180. This ensures that the evaluation platform system160 returns, for presentation, a digital content item 165 for an objectfor which the user of the client device has expressed interest (e.g., byvisiting a webpage hosting content related to the object).

In response to a conversion or other action on a website (e.g.,indication that a purchase has been made), the content provider system170 provides notice to the evaluation platform system 160. The dataprocessing system 100 removes the client device identifier of the list150 z from the corresponding audience segment by removing the mapping ofthe client device identifier to the object identifier 150 w. Theevaluation platform system 160 removes the cookie data 185 from thebrowser of the client device 180 that indicates that the user has aninterest in that object. In some implementations, the client device 180stores other, different cookie data indicating that the client devicehas made a conversion (e.g., purchased the object of the objectidentifier 150 w). This additional cookie data is readable bysubsequently-visited content provider systems. As a result, thosecontent provider systems know not to send instructions to the networkinginterface system 110 to place the user into an audience segmentcorresponding to the subject matter.

The networking interface system 110 communicates with the contentprovider system 170 and the client device 180 using a network (notshown). The network includes one or more sub-networks. The network(s)provide for communications under various modes or protocols, such asGlobal System for Mobile communication (GSM) voice calls, Short MessageService (SMS), Enhanced Messaging Service (EMS), or Multimedia MessagingService (MMS) messaging, Code Division Multiple Access (CDMA), TimeDivision Multiple Access (TDMA), Personal Digital Cellular (PDC),Wideband Code Division Multiple Access (WCDMA), CDMA2000, General PacketRadio System (GPRS), or one or more television or cable networks, amongothers. For example, the communication occurs through a radio-frequencytransceiver. In addition, short-range communication occurs, such asusing a Bluetooth®, WiFi®, or other such transceiver.

An example client device 180 is an electronic device that is undercontrol of a user and that is capable of requesting and receivingresources over the network. A client device 180 can include one or moreprocessing devices, and can be, or include, a mobile telephone (e.g., asmartphone), a laptop computer, a handheld computer, an interactive orso-called “smart” television or set-top box, a tablet computer, anetwork appliance, a camera, an enhanced general packet radio service(EGPRS) mobile phone, a media player, a navigation device, an emaildevice, a game console, or a combination of any two or more of thesedata processing devices or other data processing devices.

The client device 180 includes/stores one or more user applications,such as a browser, to facilitate the sending and receiving of data overnetwork. In some implementations, the client device 180 is mobile(“mobile device”), such as a smartphone or a table computer, and caninclude an application (“app”) that allows the user to conduct a network(e.g., web) search.

When the content 175 (e.g., webpage data, search results, etc.) arerequested by a client device 180, the evaluation platform system 160receives a request for one or more digital content item 165 to beprovided with the content 175. The request for the digital content items165 includes characteristics of one or more “slots” that are defined forthe content 175 that is requested. For example, data representing thecontent 175 can include data specifying a portion of content 175 or aportion of a user display, such as a presentation location of a pop-upwindow or a slot of a third-party content site or webpage, in which thecontent 175 can be presented. Search results pages can also include oneor more slots in which the digital content item 165 is presented for theclient device 180.

The content provider system 170 provides data about slots to theevaluation platform system 160. For example, the content provider system170 a provides data including a content identifier (e.g., URL) of thecontent 175 for which the slot is defined, a size of the slot, and/ormedia types that are available for presentation in the slot, to thenetwork interface system 110. Similarly, object titles (such as objecttitle 150 y) and eligible content items list 190 associated withrequested content 175 are also provided to the evaluation platformsystem 160 to facilitate identification of content that is relevant tothe client device 180.

Based on the eligible content items list 190, the evaluation platformsystem 160 selects content that is eligible to be provided in responseto the request (“eligible digital content items”). For example, eligibledigital content items include content items associated with one or moreof the objects included in the object identifiers (such as objectidentifier 150 w) mapped to the client device identifier of the list 150z.

Referring to FIG. 2, a diagram 200 shows representative graphical userinterfaces (GUIs) of webpages 202, 220 and example script tag data 210,214. Webpage 202 shows a first example of script tag data 210 beingextracted from content of a content provider system. The webpage 202includes a webpage identifier 226 (a URL) ofhttp://www/localstore.com/clothing/shirts/polo/id=02211. A mappingengine system can parse the webpage identifier 226 and the webpage HTML(or other code for assembling the webpage content) to determine theobject identifier. For example, the webpage title is “Greed Med. Polo,”as indicated by the script tag data 210. The webpage identifier 226 isalso included in the script tag data 210.

The mapping engine system parses the content 230 of the website 202 andthe digital content items 224, 228 and performs a semantic analysis, asdescribed above, to determine the object title. The content items 224,228 and content 230 indicate that the object represented on the webpageis a green polo shirt of medium size. The mapping engine systemdetermines that the object title is a “green polo shirt.” The object isidentified in an object feed and added to the object identifier index,if not already present.

Webpage 220 shows a second example of script tag data 214 beingextracted from content of a content provider system. The webpage 220includes a webpage identifier 234 (a URL) ofhttp://www/localstore.com/clothing/shirts/polo/id=02213. A mappingengine system can parse the webpage identifier 234 and the webpage HTML(or other code for assembling the webpage content) to determine theobject identifier. For example, the webpage title is “Greed Med. Polo,”as indicated by the script tag data 214. The webpage identifier 264 isalso included in the script tag data 214.

The mapping engine system parses the content 230 of the website 220 andthe digital content items 232, 228 and performs a semantic analysis, asdescribed above, to determine the object title. The content items 232,228 and content 230 indicate that the object represented on the webpageis a red polo shirt of medium size. The mapping engine system determinesthat the object title is a “red polo shirt.” The object is identified inan object feed and added to the object identifier index, if not alreadypresent.

The mapping engine system identifies that the webpages 202 and 220 havethe same domain, and are from the same content provider system. Themapping engine finds patterns in the webpage identifiers 226, 234, ofwebpages 202, 220, respectively. Based on comparing the webpageidentifiers 226, 234 of the domain “localstore.com” to each other, themapping engine system determines that the object identifiers are after“id=” characters, are offset three characters from a grouping identifier“polo,” (and another grouping identifier “clothing”), and include fivedigit sequences that begin with the numbers “022,” (which may indicatean object group of “clothing,” “polo,” etc.). The mapping engine systemidentifies the object identifiers as “02211” for a “green polo shirt”and “02213” for a “red polo shirt,” the object titles identifiedpreviously. The mapping engine system maps the object titles, accessingdevice identifier retrieved from cookie data, and determined objectidentifiers into entries of the object identifier index. When the devicerequests content from the domain of webpages 202, 220, digital contentitems representing objects “green polo shirt” and “red polo shirt” aretagged as eligible digital content items for the evaluation platformsystem evaluation process.

FIG. 3 is a flow diagram showing actions for generating an objectidentifier index. A data processing system receives (302) script dataincluding a network address and content titles of content of the networkaddress. The data processing system retrieves (304), based on the domaindata of the network address, one or more rules for parsing the networkaddress. The data processing system extracts (306), from the networkaddress according to the one or more rules, an identifier thatrepresents an object that is referenced in the content stored at thenetwork address. The data processing system maps (308) the content titleof the content of the network address to the stored object titlerepresenting the object.

FIG. 4 shows example computing devices 400, 450 that may be used toimplement the systems and methods described in this document, as eithera client or as a server or plurality of servers. Computing device 400 isintended to represent various forms of digital computers, such aslaptops, desktops, workstations, personal digital assistants, servers,blade servers, mainframes, and other appropriate computers. Computingdevice 450 is intended to represent various forms of mobile devices,such as personal digital assistants, cellular telephones, smartphones,and other similar computing devices. Additionally, computing device 400or 450 can include Universal Serial Bus (USB) flash drives. The USBflash drives may store operating systems and other applications. The USBflash drives can include input/output components, such as a wirelesstransmitter or USB connector that may be inserted into a USB port ofanother computing device. The components shown here, their connectionsand relationships, and their functions, are meant to be exemplary only,and are not meant to limit implementations of the inventions describedand/or claimed in this document.

Computing device 400 includes a processor 402, memory 404, a storagedevice 406, a high-speed interface 408 connecting to memory 404 andhigh-speed expansion ports 410, and a low speed interface 412 connectingto low speed bus 414 and storage device 406. Each of the components 402,404, 406, 408, 410, and 412, are interconnected using various buses, andmay be mounted on a common motherboard or in other manners asappropriate. The processor 402 can process instructions for executionwithin the computing device 400, including instructions stored in thememory 404 or on the storage device 406 to display graphical informationfor a GUI on an external input/output device, such as display 416coupled to high speed interface 408. In other implementations, multipleprocessors and/or multiple buses may be used, as appropriate, along withmultiple memories and types of memory. Also, multiple computing devices400 may be connected, with each device providing portions of thenecessary operations (e.g., as a server bank, a group of blade servers,or a multi-processor system).

The memory 404 stores information within the computing device 400. Inone implementation, the memory 404 is a volatile memory unit or units.In another implementation, the memory 404 is a non-volatile memory unitor units. The memory 404 may also be another form of computer-readablemedium, such as a magnetic, computer-readable hardware storage device oroptical disk.

The storage device 406 is capable of providing mass storage for thecomputing device 400. In one implementation, the storage device 406 maybe or contain a computer-readable medium, such as a floppy disk device,a hard disk device, an optical disk device, or a tape device, a flashmemory or other similar solid state memory device, or an array ofdevices, including devices in a storage area network or otherconfigurations. A computer program product can be tangibly embodied inan information carrier. The computer program product may also containinstructions that, when executed, perform one or more methods, such asthose described above. The information carrier is a computer- ormachine-readable medium, such as the memory 404, the storage device 406,or memory on processor 402.

The high speed controller 408 manages bandwidth-intensive operations forthe computing device 400, while the low speed controller 412 manageslower bandwidth-intensive operations. Such allocation of functions isexemplary only. In one implementation, the high-speed controller 408 iscoupled to memory 404, display 416 (e.g., through a graphics processoror accelerator), and to high-speed expansion ports 410, which may acceptvarious expansion cards (not shown). In the implementation, low-speedcontroller 412 is coupled to storage device 406 and low-speed expansionport 414. The low-speed expansion port, which may include variouscommunication ports (e.g., USB, Bluetooth, Ethernet, wireless Ethernet)may be coupled to one or more input/output devices, such as a keyboard,a pointing device, a scanner, or a networking device such as a switch orrouter, e.g., through a network adapter.

The computing device 400 may be implemented in a number of differentforms, as shown in the figure. For example, it may be implemented as astandard server 420, or multiple times in a group of such servers. Itmay also be implemented as part of a rack server system 424. Inaddition, it may be implemented in a personal computer such as a laptopcomputer 422. Alternatively, components from computing device 400 may becombined with other components in a mobile device (not shown), such asdevice 450. Each of such devices may contain one or more of computingdevices 400, 450, and an entire system may be made up of multiplecomputing devices 400, 450 communicating with each other.

Computing device 450 includes a processor 452, memory 464, aninput/output device such as a display 454, a communication interface466, and a transceiver 468, among other components. The device 450 mayalso be provided with a storage device, such as a microdrive or otherdevice, to provide additional storage. Each of the components 450, 452,464, 454, 466, and 468, are interconnected using various buses, andseveral of the components may be mounted on a common motherboard or inother manners as appropriate.

The processor 452 can execute instructions within the computing device450, including instructions stored in the memory 464. The processor maybe implemented as a chip set of chips that include separate and multipleanalog and digital processors. Additionally, the processor may beimplemented using any of a number of architectures. For example, theprocessor 410 may be a CISC (Complex Instruction Set Computers)processor, a RISC (Reduced Instruction Set Computer) processor, or aMISC (Minimal Instruction Set Computer) processor. The processor mayprovide, for example, for coordination of the other components of thedevice 450, such as control of user interfaces, applications run bydevice 450, and wireless communication by device 450.

Processor 452 may communicate with a user through control interface 458and display interface 456 coupled to a display 454. The display 454 maybe, for example, a TFT (Thin-Film-Transistor Liquid Crystal Display)display or an OLED (Organic Light Emitting Diode) display, or otherappropriate display technology. The display interface 456 may compriseappropriate circuitry for driving the display 454 to present graphicaland other information to a user. The control interface 458 may receivecommands from a user and convert them for submission to the processor452. In addition, an external interface 462 may be in communication withprocessor 452, so as to enable near area communication of device 450with other devices. External interface 462 may provide, for example, forwired communication, or for wireless communication in otherimplementations, and multiple interfaces may also be used.

The memory 464 stores information within the computing device 450. Thememory 464 can be implemented as one or more of a computer-readablemedium or media, a volatile memory unit or units, or a non-volatilememory unit or units. Expansion memory 474 may also be provided andconnected to device 450 through expansion interface 472, which mayinclude, for example, a SIMM (Single In-Line Memory Module) cardinterface. Such expansion memory 474 may provide extra storage space fordevice 450, or may also store applications or other information fordevice 450. Specifically, expansion memory 474 may include instructionsto carry out or supplement the processes described above, and mayinclude secure information also. Thus, for example, expansion memory 474may be a security module for device 450, and may be programmed withinstructions that permit secure use of device 450. In addition, secureapplications may be provided via the SIMM cards, along with additionalinformation, such as placing identifying information on the SIMM card ina non-hackable manner.

The memory may include, for example, flash memory and/or NVRAM memory,as discussed below. In one implementation, a computer program product istangibly embodied in an information carrier. The computer programproduct contains instructions that, when executed, perform one or moremethods, such as those described above. The information carrier is acomputer- or machine-readable medium, such as the memory 464, expansionmemory 474, or memory on processor 452 that may be received, forexample, over transceiver 468 or external interface 462.

Device 450 may communicate wirelessly through communication interface466, which may include digital signal processing circuitry wherenecessary. Communication interface 466 may provide for communicationsunder various modes or protocols, such as GSM voice calls, SMS, EMS, orMMS messaging, CDMA, TDMA, PDC, WCDMA, CDMA2000, or GPRS, among others.Such communication may occur, for example, through radio-frequencytransceiver 468. In addition, short-range communication may occur, suchas using a Bluetooth, WiFi, or other such transceiver (not shown). Inaddition, GPS (Global Positioning System) receiver module 470 mayprovide additional navigation- and location-related wireless data todevice 450, which may be used as appropriate by applications running ondevice 450.

Device 450 may also communicate audibly using audio codec 460, which mayreceive spoken information from a user and convert it to usable digitalinformation. Audio codec 460 may likewise generate audible sound for auser, such as through a speaker, e.g., in a handset of device 450. Suchsound may include sound from voice telephone calls, may include recordedsound (e.g., voice messages, music files, etc.) and may also includesound generated by applications operating on device 450.

The computing device 450 may be implemented in a number of differentforms, as shown in the figure. For example, it may be implemented as acellular telephone 480. It may also be implemented as part of asmartphone 482, personal digital assistant, or other similar mobiledevice.

Various implementations of the systems and techniques described here canbe realized in digital electronic circuitry, integrated circuitry,specially designed ASICs (application specific integrated circuits),computer hardware, firmware, software, and/or combinations thereof.These various implementations can include implementation in one or morecomputer programs that are executable and/or interpretable on aprogrammable system including at least one programmable processor, whichmay be special or general purpose, coupled to receive data andinstructions from, and to transmit data and instructions to, a storagesystem, at least one input device, and at least one output device.

These computer programs (also known as programs, software, softwareapplications or code) include machine instructions for a programmableprocessor, and can be implemented in a high-level procedural and/orobject-oriented programming language, and/or in assembly/machinelanguage. As used herein, the terms “machine-readable medium”“computer-readable medium” refers to any computer program product,apparatus and/or device (e.g., magnetic discs, optical disks, memory,Programmable Logic Devices (PLDs)) used to provide machine instructionsand/or data to a programmable processor, including a machine-readablemedium that receives machine instructions as a machine-readable signal.The term “machine-readable signal” refers to any signal used to providemachine instructions and/or data to a programmable processor.

To provide for interaction with a user, the systems and techniquesdescribed here can be implemented on a computer having a display device(e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor)for displaying information to the user and a keyboard and a pointingdevice (e.g., a mouse or a trackball) by which the user can provideinput to the computer. Other kinds of devices can be used to provide forinteraction with a user as well; for example, feedback provided to theuser can be any form of sensory feedback (e.g., visual feedback,auditory feedback, or tactile feedback); and input from the user can bereceived in any form, including acoustic, speech, or tactile input.

The systems and techniques described here can be implemented in acomputing system that includes a back-end component (e.g., as a dataserver), or that includes a middleware component (e.g., an applicationserver), or that includes a front-end component (e.g., a client computerhaving a graphical user interface or a Web browser through which a usercan interact with an implementation of the systems and techniquesdescribed here), or any combination of such back-end, middleware, orfront-end components. The components of the system can be interconnectedby any form or medium of digital data communication (e.g., acommunication network). Examples of communication networks include alocal area network (“LAN”), a wide area network (“WAN”), peer-to-peernetworks (having ad-hoc or static members), grid computinginfrastructures, and the Internet.

The computing system can include clients and servers. A client andserver are generally remote from each other and typically interactthrough a communication network. The relationship of client and serverarises by virtue of computer programs running on the respectivecomputers and having a client-server relationship to each other.

Elements of different implementations described herein can be combinedto form other implementations not specifically set forth above. Elementscan be left out of the processes, computer programs, etc. describedherein without adversely affecting their operation. In addition, thelogic flows depicted in the figures do not require the particular ordershown, or sequential order, to achieve desirable results. Variousseparate elements can be combined into one or more individual elementsto perform the functions described herein.

Other implementations not specifically described herein are also withinthe scope of the following claims.

1. (canceled)
 2. A method, comprising: receiving, from a static scripttag executed at a client device, script data specifying (i) a deviceidentifier of the client device and (ii) a network address of digitalcontent presented at the client device; extracting, from the networkaddress, an identifier of an object that is included in the digitalcontent accessible at the network address; searching an index toidentify a first entry with indexed data representing a descriptor ofthe object; and generating, in the index, a mapping between the firstentry and the device identifier; after generating the mapping betweenthe first entry and the device identifier: receiving a request for acontent item from the client device; identifying the device identifierof the client device in the index; and returning, responsive to therequest for the content item, a given content item selected using one ormore of the descriptor of the object or the identifier of the objectthat are mapped to the device identifier in the index.
 3. The method ofclaim 2, wherein searching an index to identify a first entry withindexed data representing a descriptor of the object comprises searchingthe index to identify an object title that describes a productrepresented by the object.
 4. The method of claim 2, wherein generatinga mapping between the first entry and the device identifier furthercomprises generating a mapping between the first entry, the deviceidentifier, and a second entry specifying content that is accessible atthe network address.
 5. The method of claim 2, further comprising:matching the descriptor of the object to a stored object title of adifferent index entry; and mapping the device identifier to thedifferent index entry based on the matching.
 6. The method of claim 2determining one or more rules for a domain based on an analysis ofnetwork addresses of the domain.
 7. The method of claim 2, wherein: thestatic script tag is included in a plurality of different web pages; andreceiving script data comprises receiving different script data fromeach of two or more of the different web pages provided by differentproviders.
 8. A system comprising: one or more data storage devices; andone or more processors configured to interact with the one or more datastorage devices and execute instructions that cause the one or moreprocessors to perform operations comprising: receiving, from a staticscript tag executed at a client device, script data specifying (i) adevice identifier of the client device and (ii) a network address ofdigital content presented at the client device; extracting, from thenetwork address, an identifier of an object that is included in thedigital content accessible at the network address; searching an index toidentify a first entry with indexed data representing a descriptor ofthe object; and generating, in the index, a mapping between the firstentry and the device identifier; after generating the mapping betweenthe first entry and the device identifier: receiving a request for acontent item from the client device; identifying the device identifierof the client device in the index; and returning, responsive to therequest for the content item, a given content item selected using one ormore of the descriptor of the object or the identifier of the objectthat are mapped to the device identifier in the index.
 9. The system ofclaim 8, wherein searching an index to identify a first entry withindexed data representing a descriptor of the object comprises searchingthe index to identify an object title that describes a productrepresented by the object.
 10. The system of claim 8, wherein generatinga mapping between the first entry and the device identifier furthercomprises generating a mapping between the first entry, the deviceidentifier, and a second entry specifying content that is accessible atthe network address.
 11. The system of claim 8, wherein the instructionscause the one or more processors to perform operations furthercomprising: matching the descriptor of the object to a stored objecttitle of a different index entry; and mapping the device identifier tothe different index entry based on the matching.
 12. The system of claim8 determining one or more rules for a domain based on an analysis ofnetwork addresses of the domain.
 13. The system of claim 8, wherein: thestatic script tag is included in a plurality of different web pages; andreceiving script data comprises receiving different script data fromeach of two or more of the different web pages provided by differentproviders.
 14. A non-transitory computer readable medium storinginstructions that, upon execution, cause one or more processors toperform operations comprising: instructions that cause the one or moreprocessors to perform operations comprising: receiving, from a staticscript tag executed at a client device, script data specifying (i) adevice identifier of the client device and (ii) a network address ofdigital content presented at the client device; extracting, from thenetwork address, an identifier of an object that is included in thedigital content accessible at the network address; searching an index toidentify a first entry with indexed data representing a descriptor ofthe object; and generating, in the index, a mapping between the firstentry and the device identifier; after generating the mapping betweenthe first entry and the device identifier: receiving a request for acontent item from the client device; identifying the device identifierof the client device in the index; and returning, responsive to therequest for the content item, a given content item selected using one ormore of the descriptor of the object or the identifier of the objectthat are mapped to the device identifier in the index.
 15. Thenon-transitory computer readable medium of claim 14, wherein searchingan index to identify a first entry with indexed data representing adescriptor of the object comprises searching the index to identify anobject title that describes a product represented by the object.
 16. Thenon-transitory computer readable medium of claim 14, wherein generatinga mapping between the first entry and the device identifier furthercomprises generating a mapping between the first entry, the deviceidentifier, and a second entry specifying content that is accessible atthe network address.
 17. The non-transitory computer readable medium ofclaim 14, wherein the instructions cause the one or more processors toperform operations further comprising: matching the descriptor of theobject to a stored object title of a different index entry; and mappingthe device identifier to the different index entry based on thematching.
 18. The non-transitory computer readable medium of claim 14,determining one or more rules for a domain based on an analysis ofnetwork addresses of the domain.
 19. The non-transitory computerreadable medium of claim 14, wherein: the static script tag is includedin a plurality of different web pages; and receiving script datacomprises receiving different script data from each of two or more ofthe different web pages provided by different providers.